blob: 46aca3051e24b94fc775de84c74fec5149d7013c [file] [log] [blame]
spanickera5b95cb2017-03-10 22:42:551<!DOCTYPE HTML>
2<meta charset=utf-8>
3<title>LongTask Timing: long task in nested child iframe</title>
4<body>
5
6<script src="/resources/testharness.js"></script>
7<script src="/resources/testharnessreport.js"></script>
8
9<h1>Long Task in Nested Child Iframe</h1>
10<div id="log"></div>
11<script>
npm@chromium.org71ff8882017-08-15 17:22:0112 const initialTime = performance.now();
spanickera5b95cb2017-03-10 22:42:5513 async_test(function (t) {
npm@chromium.org71ff8882017-08-15 17:22:0114 const observer = new PerformanceObserver(
spanickera5b95cb2017-03-10 22:42:5515 t.step_func(function (entryList) {
npm@chromium.org71ff8882017-08-15 17:22:0116 const entries = entryList.getEntries();
spanickera5b95cb2017-03-10 22:42:5517 assert_equals(entries.length, 1,
npm@chromium.org71ff8882017-08-15 17:22:0118 'Exactly one entry is expected.');
19 const longtask = entries[0];
20 assert_equals(longtask.entryType, 'longtask');
21 if (longtask.name == 'self' ||
22 longtask.name == 'multiple-contexts' ||
23 longtask.name == 'unknown')
24 return;
25
26 assert_equals(longtask.name, 'same-origin-descendant');
spanickera5b95cb2017-03-10 22:42:5527 assert_greater_than(longtask.duration, 50);
npm@chromium.org71ff8882017-08-15 17:22:0128 assert_greater_than_equal(longtask.startTime, initialTime);
29 const currentTime = performance.now();
30 assert_less_than_equal(longtask.startTime, currentTime);
spanickera5b95cb2017-03-10 22:42:5531
32 // Assert the TaskAttributionTiming entry in attribution.
33 assert_equals(longtask.attribution.length, 1,
npm@chromium.org71ff8882017-08-15 17:22:0134 'Exactly one attribution entry is expected');
35 const attribution = longtask.attribution[0];
36 assert_equals(attribution.entryType, 'taskattribution');
37 assert_equals(attribution.name, 'script');
spanickera5b95cb2017-03-10 22:42:5538 assert_equals(attribution.duration, 0);
39 assert_equals(attribution.startTime, 0);
npm@chromium.org71ff8882017-08-15 17:22:0140 assert_equals(attribution.containerId, 'child-iframe-id');
41 assert_equals(attribution.containerName, 'child-iframe-name');
42 assert_equals(attribution.containerSrc, 'resources/subframe-with-longtask.html');
spanickera5b95cb2017-03-10 22:42:5543 observer.disconnect();
44 t.done();
45 })
46 );
npm@chromium.org71ff8882017-08-15 17:22:0147 observer.observe({entryTypes: ['longtask']});
48 const iframe = document.createElement('iframe');
49 iframe.id = 'child-iframe-id';
50 iframe.name = 'child-iframe-name';
51 document.body.appendChild(iframe);
52 iframe.src = 'resources/subframe-with-longtask.html';
53}, 'Performance longtask entries in child iframe are observable in parent.');
spanickera5b95cb2017-03-10 22:42:5554</script>
55
npm@chromium.org71ff8882017-08-15 17:22:0156</body>